package com.meiyou.mapper;

import com.meiyou.annotation.AutoFill;
import com.meiyou.dto.UserRegisterDto;
import com.meiyou.entity.User;
import com.meiyou.enumeration.OperationType;
import com.meiyou.vo.SystemByMonthVo;
import com.meiyou.vo.UserByAddressVo;
import com.meiyou.vo.UserInfoVo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @BelongsProject: meiyou
 * @BelongsPackage: com.meiyou.mapper
 * @Date: 2023/11/23 18:17
 * @Description: todo
 */
@Mapper
public interface UserMapper {
    @AutoFill(value = OperationType.INSERT)
    void insert(User user);

    Integer select(UserRegisterDto userRegisterDto);

    /**
     * 根据用户名查询
     *
     * @param username
     * @return
     */
    User getByUsername(String username);

    /**
     * 修改用户信息
     *
     * @param user
     */
    void update(User user);

    /**
     * 根据邮箱查询用户id
     *
     * @param email
     * @return
     */
    Long getByUserIdEmail(String email);

    /**
     * 根据id查询角色
     *
     * @param userId
     */
    Integer selectRole(Long userId);

    /**
     * 查询用户头像地址
     *
     * @param id
     * @return
     */
    String selectAvatar(Long id);

    /**
     * 获取用户信息
     *
     * @param id
     * @return
     */
    UserInfoVo getByUserId(Long id);

    /**
     * 获取总用户数
     *
     * @return
     */
    Integer count();

    /**
     * 获取最近三个月用户数
     *
     * @return
     */
    List<SystemByMonthVo> selectByMonth();

    /**
     * 获取每个地区的用户占比，前五
     *
     * @return
     */
    List<UserByAddressVo> getByAddress();
}
